package com.mes.cloud.dto;

import com.mes.cloud.annotation.ExcelAttribute;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 行政区
 *
 * @author wxm
 * @Time 2019-4-16
 */
@ApiModel(value = "AreaDTO", description = "行政区划")
@Data
public class AreaDTO extends BaseDto implements Serializable {
    private static final long serialVersionUID = 1L;

    public AreaDTO() {
    }

    /**
     *
     */
    @ApiModelProperty(value = "ID", dataType = "Long")
    @ExcelAttribute(name = "ID", column = "A")
    private Long id;
    /**
     * 编码
     */
    @ApiModelProperty(value = "编码", dataType = "String")
    @ExcelAttribute(name = "编码", column = "B")
    @NotNull(message = "code不能为空！")
    private String code;
    /**
     * 父编码
     */
    @ApiModelProperty(value = "父编码", dataType = "String")
    @ExcelAttribute(name = "父编码", column = "C")
    @NotNull(message = "parentCode不能为空！")
    private String parentCode;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称", dataType = "String")
    @ExcelAttribute(name = "名称", column = "D")
    @NotNull(message = "name不能为空！")
    private String name;
    /**
     * 简称
     */
    @ApiModelProperty(value = "简称", dataType = "String")
    @ExcelAttribute(name = "简称", column = "E")
    private String shortName;
    /**
     * 经度
     */
    @ApiModelProperty(value = "经度", dataType = "Long")
    @ExcelAttribute(name = "经度", column = "F")
    private Long lng;
    /**
     * 纬度
     */

    @ApiModelProperty(value = "纬度", dataType = "Long")
    @ExcelAttribute(name = "纬度", column = "G")
    private Long lat;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序", dataType = "Long")
    @ExcelAttribute(name = "排序", column = "H")
    private Long sort;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述", dataType = "String")
    @ExcelAttribute(name = "描述", column = "I")
    private String remark;
    /**
     *
     */
    @ApiModelProperty(value = "0-正常/1-删除", dataType = "Integer")
    private Integer isDelete;
    /**
     *
     */
    @ApiModelProperty(value = "0-启用/1-禁用", dataType = "Integer")
    @ExcelAttribute(name = "0-启用/1-禁用", column = "J")
    private Integer isEnable;

    /**
     *
     */
    @ApiModelProperty(value = "创建时间", dataType = "Date")
    @ExcelAttribute(name = "创建时间", column = "K")
    private Date crtdate;

    /**
     *
     */
    @ApiModelProperty(value = "修改时间", dataType = "Date")
    @ExcelAttribute(name = "修改时间", column = "L")
    private Date upddate;

    @ApiModelProperty(value = "'自定义编码'", dataType = "String")
    @ExcelAttribute(name = "自定义编码", column = "M")
    private String customCode;

    @ApiModelProperty(value = "'区划类型'", dataType = "String")
    @ExcelAttribute(name = "区划类型", column = "N")
    private String type;

    @ApiModelProperty(value = "城市分类", dataType = "String")
    @ExcelAttribute(name = "城市分类", column = "O")
    private String cityType;

    @ApiModelProperty(value = "面积", dataType = "String")
    @ExcelAttribute(name = "面积", column = "P")
    private Long areaSquare;

    @ApiModelProperty(value = "省会&副省会 0是 1否", dataType = "Integer")
    @ExcelAttribute(name = "省会&副省会 0是 1否", column = "Q")
    private Integer isProvince;

    @ApiModelProperty(value = "market门店数", dataType = "String")
    @ExcelAttribute(name = "market门店数", column = "R")
    private Long marketStore;

    @ApiModelProperty(value = "market酒店数", dataType = "String")
    @ExcelAttribute(name = "market酒店数", column = "S")
    private Long marketHotel;

    @ApiModelProperty(value = "人口", dataType = "String")
    @ExcelAttribute(name = "人口", column = "T")
    private Long population;

    @ApiModelProperty(value = "是否主城区 0是 1否", dataType = "Integer")
    @ExcelAttribute(name = "是否主城区 0是 1否", column = "U")
    private Integer isMainCity;

    @ApiModelProperty(value = "是否有子节点", dataType = "Integer")
    private Integer isChildren;

    private List<AreaDTO> children = new ArrayList<AreaDTO>();

}
